package com.itbaizhan;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * RuntimeException
 * 如：被0除，数组下标越界，空指针等
 * 编译器不处理RuntimeException，程序员需要增加“逻辑处理来避免这些异常”
 */
public class Test02 {
    public static void main(String[] args) {
       /* //异常
        int b =0;
        System.out.println(1/b);*/
        int b = 0;
        if (b != 0) {  //加判断
            System.out.println(1 / b);
        }
        //空指针异常
        // String str = null;
        //System.out.println(str.charAt(0));
        //处理异常
        String str = null;
        if (str != null) {
            System.out.println(str.charAt(0));
        }
        //类转化异常
        Animal a = new Cat();
        // Dog d =(Dog) a;//狗不可以转为猫
        if (a instanceof Dog) { //如果不是狗就不转
            Dog d = (Dog) a;
        }
        //数组越界
        int[] arr = new int[5]; //0--4
        //  System.out.println(arr[5]);
        int index = 5;
        if (index >= 0 && index < arr.length) {
            System.out.println(arr[index]);
        }
        //数字格式化异常
        String str2 = "1234asdf"; //因为是数字与字组成，所以不可以转
        // 只有是数字或只有字母，才可以转
        //  System.out.println(Integer.parseInt(str2));
        //正则表达式
        Pattern p = Pattern.compile("^\\d+$"); //("^\\d+$") 匹配全是数字
        Matcher m = p.matcher(str);
        if (m.matches()) {  // 如果str匹配代表数字的正则表达式，才会转换
            System.out.println(Integer.parseInt(str2));
        }
    }
}
class Animal{}
class Dog extends Animal{}
class Cat extends Animal{ }

